﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using Entidades.Sistema.Venta;

namespace Controladora.Sistema.Venta
{
    public class CUGestionarcontacto
    {
        private static CUGestionarcontacto Instancia;
        public static CUGestionarcontacto ObtenerInstancia()
        {
            Instancia = new CUGestionarcontacto();
            return Instancia;
        }

        private CUGestionarcontacto()
        {
        }

        public ReadOnlyCollection<Contacto> ConsultarContacto()
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            ReadOnlyCollection<Contacto> ColContacto = Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().ListarContacto();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return ColContacto;
        }

        public Contacto BuscarContacto(int idContacto)
        {
            try
            {
                Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
                Contacto oContacto =
                    Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().BuscarContacto(idContacto);
                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
                return oContacto;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            }
        }

        public bool AgregarContacto(Contacto oContacto)
        {
            bool retorno = false;

            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            if (Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().ValidarExistencia(oContacto) == true)
            {
                bool res = Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().AgregarContacto(oContacto);
                retorno = true;
            }
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return retorno;
        }

        public void ModificarContacto(Contacto oContacto)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().ModificarContacto(oContacto);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
        }

        public void EliminarContacto(Contacto oContacto)
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().EliminarContacto(oContacto);
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
        }

        public Int32 GetMayor()
        {
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            Int32 max = Modelo.Sistema.Venta.CatalogoContacto.ObtenerInstancia().GetMayor();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");

            return max;
        }
    }
}
